home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 4810 / 4810.xpi / chrome / speeddial.jar / content / settings / targetSelector.js < prev    next >
Text File  |  2010-01-31  |  5KB  |  137 lines

  1. // Global vars
  2. var gPref = Components.classes["@mozilla.org/preferences-service;1"]
  3.                .getService(Components.interfaces.nsIPrefService)
  4.                .QueryInterface(Components.interfaces.nsIPrefBranch2);
  5. var updateTimer = null;
  6.  
  7. var SHOWING_DIALS = 0;
  8. var SHOWING_GROUPS = 1;
  9. var showing;
  10. var callbackType;
  11.  
  12. function Startup() {
  13.   showing = window.arguments[0][0];
  14.   callbackType = window.arguments[0][1];
  15.  
  16.   refreshEntityList();
  17.   SpeedDialPrefObserver.addPrefObserver();
  18. }
  19.  
  20. function onOK(event) {
  21.   var list = document.getElementById("entityList");
  22.   var outlist = new Array();
  23.   
  24.   for (var c=0; c<list.selectedItems.length;c++) {
  25.     outlist[outlist.length] = parseInt(list.selectedItems[c].getAttribute("number"));
  26.   }
  27.   
  28.   window.opener.processTargetSelectorOutput(callbackType, outlist);
  29.   return true;
  30. }
  31.  
  32. function onCancel(event) {
  33.   return true;
  34. }
  35.  
  36. function Unload() {
  37.   SpeedDialPrefObserver.removePrefObserver();
  38. }
  39.  
  40. function selectAll() {
  41.   var list = document.getElementById("entityList");
  42.   list.selectAll();
  43. }
  44.  
  45. function selectNone() {
  46.   var list = document.getElementById("entityList");
  47.   list.clearSelection();
  48. }
  49.  
  50. function refreshEntityList() {
  51.   var list = document.getElementById("entityList");
  52.   
  53.   while (list.firstChild) {
  54.     list.removeChild(list.firstChild);
  55.   }
  56.  
  57.   var speedDialBundle = document.getElementById("bundle_speeddial");
  58.  
  59.   if (showing == SHOWING_GROUPS) {
  60.     var numGroups = gPref.getIntPref("extensions.speeddial.numGroups");
  61.     for (var b=1; b<=numGroups; b++) {
  62.       var row = document.createElement("listitem");
  63.       row.id = "";
  64.       row.setAttribute("number", b);
  65.       if (gPref.prefHasUserValue("extensions.speeddial.group-" + b + "-title")) {
  66.         row.setAttribute("label", gPref.getComplexValue("extensions.speeddial.group-" + b + "-title", Components.interfaces.nsISupportsString).data);
  67.       } else {
  68.         row.setAttribute("label", speedDialBundle.getFormattedString("untitledGroup.label", [b]));
  69.       }
  70.       list.appendChild(row);
  71.     }
  72.   } else {
  73.     var numDials = SpeedDialUtils.getTotalDials();
  74.     for (var b=1; b<=numDials; b++) {
  75.       if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + b + "-url")) {
  76.         var row = document.createElement("listitem");
  77.         row.id = "";
  78.         row.setAttribute("number", b);
  79.         var label = "";
  80.         if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + b + "-label")) {
  81.           label = gPref.getComplexValue("extensions.speeddial.thumbnail-" + b + "-label", Components.interfaces.nsISupportsString).data;
  82.         }
  83.         if (label != "") {
  84.           row.setAttribute("label", "" + b + " - " + label);
  85.         } else {
  86.           row.setAttribute("label", "" + b + " - " + speedDialBundle.getString("untitled.label"));
  87.         }
  88.         row.setAttribute("tooltiptext", gPref.getCharPref("extensions.speeddial.thumbnail-" + b + "-url"));
  89.       }
  90.       list.appendChild(row);
  91.     }
  92.   }
  93. }
  94.  
  95. var SpeedDialPrefObserver = 
  96. {
  97.   prefObserver : {
  98.     observe: function(subject, topic, data) {
  99.  
  100.     if (topic == "nsPref:changed") {
  101.       if (((showing == SHOWING_GROUPS) && ((data.indexOf("extensions.speeddial.group-") == 0) || (data.indexOf("extensions.speeddial.numGroups") == 0) ) ) ||
  102.           ((showing == SHOWING_DIALS) && (data.indexOf("extensions.speeddial.thumbnail-") == 0))) {
  103.         if (updateTimer == null) {
  104.           updateTimer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer);
  105.         }
  106.         updateTimer.cancel();
  107.         updateTimer.initWithCallback(SpeedDialPrefObserver.prefObserver, 100, Components.interfaces.nsITimer.TYPE_ONE_SHOT);
  108.       }
  109.     }
  110.   },
  111.  
  112.   QueryInterface : function (aIID) {
  113.     if (aIID.equals(Components.interfaces.nsIObserver) || 
  114.     aIID.equals(Components.interfaces.nsITimerCallback) ||
  115.     aIID.equals(Components.interfaces.nsISupports) ||
  116.     aIID.equals(Components.interfaces.nsISupportsWeakReference))
  117.       return this;
  118.     throw Components.results.NS_NOINTERFACE;
  119.   },
  120.  
  121.     notify: function(timer) {
  122.       refreshEntityList();
  123.     }
  124.   },
  125.   
  126.   addPrefObserver : function () {
  127.     if (!gPref) return;
  128.     gPref.addObserver("extensions.speeddial.", SpeedDialPrefObserver.prefObserver, true);
  129.   },
  130.  
  131.   removePrefObserver : function () {
  132.     if (!gPref) return;
  133.     gPref.removeObserver("extensions.speeddial.", SpeedDialPrefObserver.prefObserver);
  134.   }
  135. };
  136.  
  137.